16149
22551
Minulla on alla oleva tietojoukko
nimi col1 col2
a 10,3 10,9
b 11 15
c 20 7.2
d 6,2 6,2
e 5,3 5,4
f 4,5 4,0
Haluan verrata df: n col1 ja col2 ja haluan tehdä toisen sarakkeen, jossa verrattaessa col1- ja col2-arvoja, jos col2: n arvo kasvaa col1: stä, haluan sitten lisätä niiden vieressä sarakkeeseeni ja jos laskeva sitten haluan kirjoittaa laskeva eikä muutoksia, jos ne ovat samat
ja haluan tuotokseni tältä
nimi col1 col2 col3
a 10,3 10,9 kasvaa
b 11 15 kasvaa
c 20 7,2 laskeva
d 6,2 6,2 ei muutosta
e 5,3 5,4 kasvaa
f 4,5 4,0 laskeva 
Dplyrin kanssa:
df%>%
mutaatio (Col3 = ifelse (col2 == col1,
"ei muutosta",
ifelse (col2> col1,
"kasvava", "laskeva")))
Tai käyttämällä case_when @akrunin ehdottamia:
df%>%
mutaatio (Col3 = tapaus_milloin (kol1 == kol2 ~ "ei muutosta",
col2> col1 ~ "Lisääntyvä",
TOSI ~ "vähenee"))
Tulos:
nimi col1 col2 Col3
1 a 10,3 10,9 kasvaa
2 b 11,0 15,0 kasvaa
3 c 20,0 7,2 laskeva
4 p 6,2 6,2 ei muutosta
5 e 5,3 5,4 kasvaa
6 f 4,5 4,0 laskeva
Tiedot:
df <-rakenne (luettelo (nimi = c ("a", "b", "c", "d", "e", "f"), col1 = c (10,3,
11, 20, 6.2, 5.3, 4.5), col2 = c (10.9, 15, 7.2, 6.2, 5.4, 4)), class = "data.frame", rivinimet = c (NA
-6L))
|
Voimme vähentää col1: n col2: lla ja käyttää sitten merkkiä arvon määrittämiseen
df $ col3 <- c ("vähenee", "ei muutosta", "kasvaa") [merkki (df $ col1 - df $ col2) + 2]
df
# nimi col1 col2 col3
# 1 a 10,3 10,9 laskeva
# 2 b 11,0 15,0 laskeva
# 3 c 20,0 7,2 kasvaa
# 4 d 6.2 6.2 ei muutosta
# 5 e 5,3 5,4 laskussa
# 6 f 4,5 4,0 kasvaa
Tai käyttämällä dplyria voimme käyttää case_when
kirjasto (dplyr)
df%>%
mutaatio (col3 = tapaus_milloin (col1 == col2 ~ "ei muutosta",
col1> col2 ~ "kasvaa",
TOSI ~ "vähenee"))
|
Pohja R
df $ col3 <-with (df, ifelse (col1> col2, "laskeva",
ifelse (col1